---
title: 变量
---

变量是一个带标签的数据容器，用于在你的 Workflow 或 Chatflow 中存储信息。每个变量保存一条数据——无论是用户输入、系统生成的值，还是来自前面节点的输出。当你在后续节点中需要使用这些信息时，只需通过变量名引用即可。

在构建应用时，你将用到不同类型的变量，每种变量都在应用的数据流中承担特定的作用。

## 变量类型

### 系统变量

系统变量是预设的系统级参数，可在全局范围内使用。

<Tabs>
  <Tab title="Workflow">

    | 变量名称 | <div style={{width: '60px'}}>数据类型</div> | 说明 | 备注 |
    |:----------------|:-----------|:-------------|:--------|
    | `sys.user_id` | String | 用户 ID，每个用户在使用工作流应用时，系统会自动向用户分配唯一标识符，用以区分不同的对话用户。 | |
    | `sys.app_id` | String | 应用 ID，系统会向每个 Workflow 应用分配一个唯一的标识符，用以区分不同的应用，并通过此参数记录当前应用的基本信息。| 面向具备开发能力的用户，通过此参数区分并定位不同的 Workflow 应用。 |
    | `sys.workflow_id` | String | Workflow ID，用于记录当前 Workflow 应用内所包含的所有节点信息。 | 面向具备开发能力的用户，可以通过此参数追踪并记录 Workflow 内的包含节点信息。 |
    | `sys.workflow_run_id` | String | 	Workflow 应用运行 ID，用于记录 Workflow 应用中的运行情况。 | 面向具备开发能力的用户，可以通过此参数追踪应用的历次运行情况。 |
    | `sys.timestamp` | String | 每次 workflow 运行的开始时间。 | |

  </Tab>
  <Tab title="Chatflow">
    
    | 变量名称 | <div style={{width: '60px'}}>数据类型</div> | 说明 | 备注 |
    |:----------------|:-----------|:-------------|:--------|
    | `sys.conversation_id` | String | 对话框交互会话的唯一标识符，将所有相关的消息分组到同一个对话中，确保 LLM 针对同一个主题和上下文持续对话。 |  |
    | `sys.dialogue_count` | Number | 用户在与 Chatflow 类型应用交互时的对话轮数。每轮对话后自动计数增加 1，可以和 IF-ELSE 节点搭配出丰富的分支逻辑。 <br /><br />例如到第 X 轮对话时，回顾历史对话并给出分析。 |  |
    | `sys.user_id` | String | 分配给每个应用用户的唯一标识符，用以区分不同的对话用户。 | Service API 不共享 WebApp 创建的对话。这意味着具有相同 ID 的用户在 API 和 WebApp 界面之间会有独立的对话历史。 |
    | `sys.app_id` | String | 应用 ID，系统会向每个 Workflow 应用分配一个唯一的标识符，用以区分不同的应用，并通过此参数记录当前应用的基本信息。 | 面向具备开发能力的用户，通过此参数区分并定位不同的 Workflow 应用。 |
    | `sys.workflow_id` | String | Workflow ID，用于记录当前 Workflow 应用内所包含的所有节点信息。 | 面向具备开发能力的用户，可以通过此参数追踪并记录 Workflow 内的包含节点信息。 |
    | `sys.workflow_run_id` | String | Workflow 应用运行 ID，用于记录 Workflow 应用中的运行情况。 | 面向具备开发能力的用户，可以通过此参数追踪应用的历次运行情况。 |

  </Tab>
</Tabs>

### 环境变量

**环境变量用于保护工作流内所涉及的敏感信息**，例如运行工作流时所涉及的 API 密钥、数据库密码等。它们被存储在工作流程中，而不是代码中，以便在不同环境中共享。

![](https://assets-docs.dify.ai/2025/06/7b920ddf7e3b4fd26954fb518ad6754e.png)

支持以下三种数据类型：

* String 字符串
* Number 数字
* Secret 密钥

环境变量拥有以下特性：

* 环境变量可在大部分节点内全局引用；
* 环境变量命名不可重复；
* 环境变量为只读变量，不可写入；

![](https://assets-docs.dify.ai/2025/06/8d9342615b3623ef4ce526a583a8de76.png)

### 会话变量

> 会话变量面向多轮对话场景，而 Workflow 类型应用的交互是线性而独立的，不存在多次对话交互的情况，因此会话变量仅适用于 **Chatflow 类型**应用。

**会话变量允许应用开发者在同一个 Chatflow 会话内，指定需要被临时存储的特定信息，并确保在当前工作流内的多轮对话内都能够引用该信息**，如上下文、上传至对话框的文件（即将上线）、 用户在对话过程中所输入的偏好信息等。好比为 LLM 提供一个可以被随时查看的"备忘录"，避免因 LLM 记忆出错而导致的信息偏差。

例如你可以将用户在首轮对话时输入的语言偏好存储至会话变量中，LLM 在回答时将参考会话变量中的信息，并在后续的对话中使用指定的语言回复用户。

![](https://assets-docs.dify.ai/2025/04/338f93f401142fea4936a67a615eba32.png)

**会话变量**支持以下八种数据类型：

* String 字符串
* Number 数值
* Object 对象
* Boolean 布尔值
* Array\[string] 字符串数组
* Array\[number] 数值数组
* Array\[object] 对象数组
* Array\[boolean] 布尔值数组

**会话变量**具有以下特性：

* 会话变量可在大部分节点内全局引用；
* 会话变量的写入需要使用[变量赋值](./node/variable-assigner)节点；
* 会话变量为可读写变量；

关于如何将会话变量与变量赋值节点配合使用，请参考[变量赋值](./node/variable-assigner)节点说明。

## 注意事项

* 为避免变量名重复，节点命名不可重复。
* 执行节点后，输出变量内的值将会被保存至[变量检查](/zh-hans/guides/workflow/debug-and-preview/variable-inspect)视图内。

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[编辑此页面](https://github.com/langgenius/dify-docs/edit/main/zh-hans/guides/workflow/variables.mdx) | [提交问题](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

